Web Worker API হল একটি ব্রাউজার API যা জাভাস্ক্রিপ্ট কোডকে ব্যাকগ্রাউন্ডে (main UI thread এর বাইরে) এক্সিকিউট করার সুযোগ দেয়। এটি প্রধানত বড় এবং জটিল কাজ, যেমন ডেটা প্রসেসিং বা বড় লুপ, মূল থ্রেডের কার্যক্ষমতা কমিয়ে না এনে সম্পন্ন করার জন্য ব্যবহৃত হয়। Web Worker API ব্যবহার করে, আপনি ব্যাকগ্রাউন্ড থ্রেডে কোড রান করতে পারেন এবং মূল UI থ্রেডটি ব্যবহারকারীর ইন্টারফেসের জন্য মুক্ত রাখতে পারেন।
Worker
ক্লাস ব্যবহার করে একটি নতুন Worker থ্রেড তৈরি করা হয়। এটি একটি JavaScript ফাইল নেয়, যেটি Worker এর কাজের লজিক ধারণ করে।
// main.js
const worker = new Worker('worker.js');
worker.postMessage('Hello, Worker!');
worker.onmessage = function(event) {
console.log('Message from Worker:', event.data);
};
// worker.js
self.onmessage = function(event) {
console.log('Message from Main:', event.data);
self.postMessage('Hello from Worker!');
};
এখানে, main.js
থেকে Worker তৈরি করা হয়েছে এবং postMessage()
মেথড ব্যবহার করে Worker-এ বার্তা পাঠানো হয়েছে। Worker থেকে আবার মেইন থ্রেডে বার্তা পাঠানো হয়েছে।
Worker এবং মূল স্ক্রিপ্টের মধ্যে যোগাযোগ postMessage()
এবং onmessage
ইভেন্ট হ্যান্ডলার ব্যবহার করে করা হয়।
// main.js
const worker = new Worker('worker.js');
// মেইন থেকে Worker-এ বার্তা পাঠানো
worker.postMessage('Process this data!');
// Worker থেকে বার্তা গ্রহণ
worker.onmessage = function(event) {
console.log('Received from Worker:', event.data);
};
// worker.js
self.onmessage = function(event) {
console.log('Received from Main:', event.data);
// প্রক্রিয়াজাত ডেটা ফেরত পাঠানো
const processedData = event.data.toUpperCase();
self.postMessage(processedData);
};
কোনো Worker এর কাজ সম্পন্ন হলে এটি বন্ধ করার জন্য terminate()
মেথড ব্যবহার করা হয়। Worker নিজেও close()
মেথড ব্যবহার করে নিজেকে বন্ধ করতে পারে।
// main.js
const worker = new Worker('worker.js');
// Worker বন্ধ করা
worker.terminate();
// worker.js
self.onmessage = function(event) {
if (event.data === 'stop') {
self.close(); // Worker নিজেকে বন্ধ করবে
}
};
CORS
সেটআপ সহ এক্সটার্নাল স্ক্রিপ্ট লোড করতে পারে।Web Worker API জাভাস্ক্রিপ্টের জন্য একটি কার্যকর টুল, যা ব্যাকগ্রাউন্ডে ভারী কাজ সম্পন্ন করতে সাহায্য করে এবং UI থ্রেডকে ফ্রিজ হওয়া থেকে রক্ষা করে। এটি প্যারালাল প্রসেসিং এবং অ্যাসিঙ্ক্রোনাস কার্য সম্পাদনের জন্য খুবই কার্যকর। যদিও এটি DOM অ্যাক্সেস করতে পারে না এবং কিছু সীমাবদ্ধতা রয়েছে, তবে সঠিকভাবে ব্যবহার করলে এটি ওয়েব অ্যাপ্লিকেশনের পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত করতে পারে। Web Worker API জটিল অ্যাপ্লিকেশনগুলোর জন্য অত্যন্ত প্রয়োজনীয়।